package com.gk.study.controller;

import com.gk.study.common.APIResponse;
import com.gk.study.common.ResponeCode;
import com.gk.study.entity.Banner;
import com.gk.study.permission.Access;
import com.gk.study.permission.AccessLevel;
import com.gk.study.service.BannerService;
import com.gk.study.service.FileService;
import com.gk.study.utils.DataUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.List;

@RestController
@RequestMapping("/banner")
public class BannerController {

    private final static Logger logger = LoggerFactory.getLogger(BannerController.class);

    @Autowired
    BannerService service;
    @Autowired
    FileService fileService;
    @RequestMapping(value = "/list", method = RequestMethod.GET)
    public APIResponse list(){
        List<Banner> list =  service.getBannerList();
        return new APIResponse(ResponeCode.SUCCESS, "查询成功", list);
    }

    @Access(level = AccessLevel.ADMIN)
    @RequestMapping(value = "/create", method = RequestMethod.POST)
    @Transactional
    public APIResponse create(Banner ad) throws IOException {
       MultipartFile file=ad.getImageFile();
        if(file!=null){
            String fileName= DataUtil.setFileName(file.getOriginalFilename());
            String path=fileService.path+"/" + fileName;
            file.transferTo(new File(path));
            ad.setImage(fileService.urlHead+"/"+fileName);
        }
        service.createBanner(ad);
        return new APIResponse(ResponeCode.SUCCESS, "创建成功");
    }

    @Access(level = AccessLevel.ADMIN)
    @RequestMapping(value = "/delete", method = RequestMethod.POST)
    public APIResponse delete(String ids){
        System.out.println("ids===" + ids);
        // 批量删除
        String[] arr = ids.split(",");
        for (String id : arr) {
            service.deleteBanner(id);
        }
        return new APIResponse(ResponeCode.SUCCESS, "删除成功");
    }

    @Access(level = AccessLevel.ADMIN)
    @RequestMapping(value = "/update", method = RequestMethod.POST)
    @Transactional
    public APIResponse update(Banner ad) throws IOException {
        MultipartFile file=ad.getImageFile();
       if(file!=null){
           String fileName= DataUtil.setFileName(file.getOriginalFilename());
           String path=fileService.path+"/" + fileName;
           file.transferTo(new File(path));
           ad.setImage(fileService.urlHead+"/"+fileName);
       }

        service.updateBanner(ad);

        return new APIResponse(ResponeCode.SUCCESS, "更新成功");
    }

}
